#include <iostream>
#include <vector>
#include <deque>
#include <string>
#include <algorithm>
#include <list>

using std::vector;
using std::deque;
using std::string;
using std::ostream;
using std::list;
using std::cout; 
using std::endl;
using std::cin;


// // 编程题：从一个 vector<char> 初始化一个 string。

// // 提示：可以定义vector如下：vector<char> vc = { 'H', 'E', 'L', 'L', 'O' };然后查看如何给string进行初始化或者赋值，考查对vector与string的基本使用

#if 0
int main()
{
    vector<char> str{'h', 'u', 'z', 'h', 'u'};
    string s(str.begin(), str.end());

    cout << s << endl;
    return 0;
}
#endif


// 编程题：从一个 list 拷贝元素到两个 deque 中。值为偶数的所有元素都拷贝到一个 deque 中，而奇数值元素都拷贝到另一个 deque 中。

// 提示：熟悉 list 容器与 deque 容器的基本操作，包括初始化、遍历、插入等等


#if 0
int main()
{
    list<int> l{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

    deque<int> odd;
    deque<int> even;
    for(auto& elem : l){
        if(elem % 2){
            odd.push_back(elem);
        }else{
            even.push_back(elem);
        }
    }

    for(auto& elem : odd){
        cout << elem << ' ';
    }
    cout << endl;


    for(auto& elem : even){
        cout << elem << ' ';
    }
    cout << endl;
    return 0;
}
#endif



// 题目：编写代码：将一个list中的char *指针元素赋值给一个vector中的string。

// 提示：加入list的定义如下，list<char*> lst= { "hello", "world", "!" };如何将list中的内容赋值给vector<string>

#if 0
int main()
{
    vector<string> v;
    list<const char*> ll = {"hello", "world", "!"};

    v.insert(v.begin(), ll.begin(), ll.end());
    for(auto& elem : v){
        cout << elem << ' ';
    }
    cout << endl;
    
    return 0;
}
#endif


// 编程题：从标准输入读取 string 序列，存入一个 deque 中。编写一个循环，用迭代器打印 deque 中的元素。

// 提示：熟悉deque的基本函数的使用方式。


#if 0
int main()
{
    deque<string> D;

    for(int i = 0; i < 3; ++i){
        string s;
        cin >> s;
        D.push_back(s);
    }

    for(auto it = D.begin(); it != D.end(); ++it){
        cout << *it << ' ';
    }
    cout << endl;

    return 0;
}
#endif




